import type { FormRules } from "element-plus";

// 视频名称验证规则（只允许中文、英文、数字、空格、连字符、括号、逗号和句号）
const videoNameRules = [
  {
    required: true,
    message: "请输入视频名称",
    trigger: "blur"
  },
  {
    min: 2,
    max: 100,
    message: "视频名称长度应在2-100个字符之间",
    trigger: "blur"
  },
  {
    pattern: /^[\u4e00-\u9fa5a-zA-Z0-9\s\-\(\)（）.,，。]+$/,
    message: "视频名称只能包含中文、英文、数字、空格、连字符、括号、逗号和句号",
    trigger: "blur"
  }
];

// 视频文件验证规则
const videoFileRules = [
  {
    required: true,
    message: "请上传视频文件",
    trigger: "change"
  }
];

// 导出验证规则
export const videoFormRules: FormRules = {
  videoName: videoNameRules,
  videoFile: videoFileRules
};

// 验证视频文件
export const validateVideoFile = (file: File) => {
  const errors: string[] = [];

  // 检查文件类型
  const allowedTypes = ['video/mp4', 'video/mov', 'video/avi', 'video/x-msvideo'];
  if (!allowedTypes.includes(file.type)) {
    errors.push("视频文件格式必须是MP4、MOV或AVI");
  }

  // 检查文件大小（50MB）
  const maxSize = 50 * 1024 * 1024;
  if (file.size > maxSize) {
    errors.push("视频文件大小不能超过50MB");
  }

  // 检查文件名长度
  if (file.name.length > 100) {
    errors.push("视频文件名长度不能超过100个字符");
  }

  return {
    isValid: errors.length === 0,
    errors
  };
};

// 表单整体验证
export const validateVideoForm = (form: any) => {
  const errors: string[] = [];

  // 验证必填字段
  if (!form.videoName?.trim()) {
    errors.push("请输入视频名称");
  }

  if (!form.videoFile?.trim()) {
    errors.push("请上传视频文件");
  }

  return {
    isValid: errors.length === 0,
    errors
  };
};
